1、離線數(shù)據(jù):hive
Hive 查詢操作過程嚴(yán)格遵守Hadoop MapReduce 的作業(yè)執(zhí)行模型,Hive 將用戶的Hive SQL 語句通過解釋器轉(zhuǎn)換為MapReduce 作業(yè)提交到Hadoop 集群上,Hadoop 監(jiān)控作業(yè)執(zhí)行過程,然后返回作業(yè)執(zhí)行結(jié)果給用戶。
Hive 并非為聯(lián)機(jī)事務(wù)處理而設(shè)計(jì),Hive 并不提供實(shí)時(shí)的查詢和基于行級(jí)的數(shù)據(jù)更新操作。Hive 的最佳使用場(chǎng)合是大數(shù)據(jù)集的批處理作業(yè)。
使用hive sql 時(shí),其語言將被轉(zhuǎn)化為mapreduce過程執(zhí)行。
2、準(zhǔn)實(shí)時(shí)數(shù)據(jù):spark
Spark之所以能成為準(zhǔn)實(shí)時(shí)數(shù)據(jù)查詢主要基于兩點(diǎn):
1)spark stream將數(shù)據(jù)分成小的時(shí)間片段,以類batch批量處理的方式來處理這部分?jǐn)?shù)據(jù)
2)能基于內(nèi)存進(jìn)行迭代,以RDD的形式實(shí)現(xiàn)(記錄操作而非數(shù)據(jù)本身),因此也存在容錯(cuò)能力。
使用spark sql時(shí),其語言將被轉(zhuǎn)化為RDD,然后將會(huì)交到集群執(zhí)行。
3、實(shí)時(shí)數(shù)據(jù):flink
Flink本身是個(gè)計(jì)算引擎,不存儲(chǔ)數(shù)據(jù),因此使用前需要確定其數(shù)據(jù)的輸入(SOURCE)/輸出(SINK)系統(tǒng)。實(shí)時(shí)計(jì)算/Flink中所謂的建表,都是邏輯表,目的僅是讓Flink作業(yè)知道上下游的數(shù)據(jù)結(jié)構(gòu)。并不會(huì)真的在上下游系統(tǒng)建表。
簡(jiǎn)單來說,flink sql是一個(gè)常駐進(jìn)程,一個(gè)sql文件,就對(duì)應(yīng)于一個(gè)flink作業(yè)。如果不殺死這個(gè)進(jìn)程,一旦由新的數(shù)據(jù)輸入,就會(huì)產(chǎn)生新的數(shù)據(jù)結(jié)果。